package game.roles;

import game.frame.MainFrame;

import java.awt.*;

/**
 * @author liuyulai
 * Created with IntelliJ IDEA.
 * Date: 21.5.7
 * Time: 11:04
 * Description: 角色类
 */
public abstract class Role {
    /**
     * 角色x坐标
     */
    public int x;

    /**
     * 角色y坐标
     */
    public int y;

    /**
     * 角色的宽度
     */
    protected int width;

    /**
     * 角色的高度
     */
    protected int height;

    /**
     * 角色图片的绘制
     */
    protected Image img;

    /**
     * 角色的当前碰撞
     */
    public Rectangle rec;

    /**
     * 角色初始化
     *
     * @param x      横坐标
     * @param y      纵坐标
     * @param width  长
     * @param height 高
     */
    public Role(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
        this.rec = new Rectangle(x + width / 4, y + height / 4, width / 2, height / 2);
    }

    /**
     * 抽象后的绘制方法，用于绘制角色
     *
     * @param graphics 内存画笔
     */
    public void drawRole(Graphics graphics) {
        graphics.drawImage(img, this.x, this.y, this.width, this.height, null);
        setRec();
        rolesMove();
        cleanResource();
    }

    /**
     * 设置碰撞区域
     */
    public void setRec() {
        this.rec.x = this.x + width / 4;
        this.rec.y = this.y + width / 4;
        this.rec.width = this.width / 2;
        this.rec.height = this.height / 2;
    }


    /**
     * 角色移动抽象方法
     */
    public abstract void rolesMove();

    /**
     * 清理多余的资源方法
     */
    public void cleanResource() {
        if (this.x < -200 || this.x > 12000 || this.y < -200 || this.y > 900) {
            MainFrame.roleList.remove(this);
//            System.out.println(MainFrame.roleList.size());
        }
    }
}
